package chequeDAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import banco.Conexao;
import bean.Busca;
import bean.Estado;
import bean.Operacao;
import clienteQuery.Cliente;
import clienteQuery.ClienteDAO;

public class QueryCheque {

	public static final int BUSCA_DATA_ULT_VENDA=5;
	public static final int BUSCA_DATA_CADASTRO=4;
	public static final int BUSCA_NOME=1;
	public static final Vector<Busca> vectorBusca = new Vector<Busca>();
	
	public static Vector<Busca> getBuscaPossivel(){
		 vectorBusca.add(new Busca("Nome",ClienteDAO.BUSCA_NOME));
		 vectorBusca.add(new Busca("Data de Cadastro",ClienteDAO.BUSCA_DATA_CADASTRO));
		
		 
		 return vectorBusca;
	}
	
	

	
	private static QueryCheque instance = null;
	private Conexao banc = Conexao.getInstancia();

	public static QueryCheque getinstancia() {

		if (instance == null) {
			instance = new QueryCheque();
		}
		return instance;
	}

	private QueryCheque() {

	}

	

	public boolean add(Operacao operacao) throws SQLException,ClassNotFoundException {

		
			Connection connexao = banc.getConexao();
			connexao.setAutoCommit(true);
			String sql = "INSERT INTO tb_operacao(idcliente,idbanco,taxa_juros,data_cheque,valor_cheque,quante_dias)" +
					"VALUE(" +operacao.getIdcliente()+","+
					operacao.getIdbanco()+","+
					operacao.getTaxa_juros()+",'"+
					operacao.getDataChequeBD()+"',"+
					operacao.getValor_cheque()+","+
					operacao.getQuante_dias()+")";
			Statement stat = connexao.createStatement();
			stat.executeUpdate(sql);
			
			stat.close();

			return true;
		

	}
	
	public boolean editar(Operacao operacao) throws SQLException,ClassNotFoundException {
		
		Connection connexao = banc.getConexao();
		connexao.setAutoCommit(true);
		String sql = "UPDATE tb_operacao SET idcliente=" +operacao.getIdcliente()+
											",idbanco=" +operacao.getIdbanco()+
											",taxa_juros=" +operacao.getTaxa_juros()+
											",data_cheque='" +operacao.getDataChequeBD()+
											"',valor_cheque=" +operacao.getValor_cheque()+
											",quante_dias="+operacao.getQuante_dias()+" where idoperacao="+operacao.getIdoperacao();
		Statement stat = connexao.createStatement();
		stat.executeUpdate(sql);
		
		stat.close();
		
					return true;
					
		
	}
	
	/**
	 * @author alberto
	 * @param order = campo para ordenar , inic = valor onde inicia a pagina ,limit = limite de registrs por parginas
	 */
	
	public Vector<Cliente> getListClinte(int valueBusca,String buscar, int order, int inic, int quant) throws ClassNotFoundException,SQLException {

	
			
			String condicao ="";
			if(valueBusca!=0 && buscar!=null){
				if(valueBusca== ClienteDAO.BUSCA_NOME){
					condicao=" and pe.nome  like '"+buscar+"%'";
				}
				
			}
			
			String format = condicao+" order by  pe.nome   limit 0, 10";
			switch (order) {
			case 1:
				format = condicao+" order by  pe.nome  limit " + inic + ", "
						+ quant;
				break;

			case 4:
				format = condicao+" order by  pe.data_cadastro  limit " + inic
						+ " , " + quant;
				break;

			case 3:
				format = condicao+" order by  cli.limite_credito  limit " + inic + " , "
						+ quant;
				break;
			
			case 5: /// falta emplemetar
				format = condicao+" order by  cli.ult_venda  limit " + inic + ", "
				+ quant;
				break;
			
			
			default: /// falta emplemetar
				format = "order by  pe.nome   limit " + inic + " , "+ quant;
				break;
			
			}
	
			Statement statement = this.banc.getConexao().createStatement();
			
			ResultSet result = statement.executeQuery("select cli.idcliente as id,cli.profissao as profiss," +
							"cli.idpessoa as idpessoa,cli.nome_pai as pai,cli.nome_mae as mae,cli.conjuge as conjuge," +
							"cli.nascido_em as nasc_em,cli.limite_credito as credito,cli.natural_de as natur,cli.ult_venda as ult_venda," +
							"pe.nome as nome,pe.telefone as tel,pe.celular as cel,pe.logradouro as endereco,pe.bairro as bairro," +
							"pe.data_cadastro as cadast_em from tb_cliente cli,tb_pessoas pe where pe.idpessoa=cli.idpessoa "
							+ format);
			Vector<Cliente> clientes = new Vector<Cliente>();

			while (result.next()) {
				Cliente clinte = new Cliente();
				clinte.setId(result.getInt("idpessoa"));
				clinte.setId(result.getInt("id"));
				clinte.setProfissao(result.getString("profiss"));
				clinte.setNascido(result.getDate("nasc_em"));
				clinte.setUltVenda(result.getTimestamp("ult_venda"));
				clinte.setNome(result.getString("nome"));
				clinte.setTelefone(result.getString("tel"));
				clinte.setLimitCred(result.getDouble("credito"));
				
				
				clientes.add(clinte);
			}
			statement.close();
			return clientes;

		
	}

	public Cliente getClinte(int id_cliente) {
/*
		try {
			Statement statement = this.banc.getConexao().createStatement();

	
			ResultSet result = statement.executeQuery("select "+
										"cli.idcliente as id,"+
										"cli.profissao as profiss,"+
										"cli.idpessoa as idpessoa,"+
										"cli.nome_pai as pai,"+
										"cli.nome_mae as mae,"+
										"cli.conjuge as conjuge,"+
										"cli.nascido_em as nasc_em,"+
										"cli.limite_credito as credito,"+
										"cli.natural_de as natur,"+
										"cli.ult_venda as ult_venda,"+
										"cli.limite_credito as credito,"+
										"pe.nome as nome,"+
										"pe.telefone as tel,"+
										"pe.celular as cel,"+
										"pe.logradouro as endereco,"+
										"pe.bairro as bairro,"+
										"pe.data_cadastro as cadast_em,"+
										"pe.observacao as obs ,"+
										"pe.email as email,"+
										"pe.ie_rg as ie_rg,"+
										"pe.municipio as municip,"+
										"pe.fax as fax,"+
										"pe.cpf_cnpj as cpf_cnpj,"+
										"pe.cep as cep,"+
										"pe.idestado as idestado,"+
										"pe.contato as contato "+
										
							"from tb_cliente cli,tb_pessoas pe where pe.idpessoa=cli.idpessoa and  cli.idcliente="+id_cliente);
	
			Cliente cliente= null;
			while (result.next()) {
				/*
				 * String bairro,
			String celular, String cep, String contato,
			String cpf_cnpj, String email, String fax, String ie_rg,
			String lougradoro, String municipio, String nome, int numero,
			String obs, String telefone, int idestado,String nome_pai,String nome_mae,
			String nascido_em,String cadastro,String conjuge,String profissao,
			String natural_de,Double limite_cred
				 
				cliente = new Cliente(result.getString("bairro"),result.getString("cel"),result.getString("cep"),
						result.getString("contato"),result.getString("cpf_cnpj"),result.getString("email"),
						result.getString("fax"),result.getString("ie_rg"),result.getString("endereco"),
						result.getString("municip"),result.getString("nome"),0,result.getString("obs"),result.getString("tel"),
						result.getInt("idestado"),result.getString("pai"),result.getString("mae"),result.getString("nasc_em"),
						result.getTimestamp("cadast_em"),result.getString("conjuge"),result.getString("profiss"),
						result.getString("natur"),result.getDouble("credito"));
				
				cliente.setId(result.getInt("idpessoa"));
				cliente.setId(result.getInt("id"));
				cliente.setProfissao(result.getString("profiss"));
				cliente.setNascido(result.getString("nasc_em"));
				cliente.setUltVenda(result.getString("ult_venda"));
				cliente.setNome(result.getString("nome"));
				cliente.setTelefone(result.getString("tel"));
				cliente.setLimitCred(result.getDouble("credito"));
				cliente.setCadastro(result.getTimestamp("cadast_em"));
				
				
			}
			return cliente;

		} catch (SQLException e) {
			e.printStackTrace();
			return null;
			// TODO: handle exception
		} */
		return null;
	}

	

}
